package com.hex.ds.hdrs.app.service;

import com.hex.bigdata.hbda.service.dto.UserDto;
import com.hex.ds.hdrs.app.dto.AppAdminRelationDto;
import com.hex.ds.hdrs.app.po.AppAdminRelationPo;
import com.hex.ds.hdrs.app.po.MenuPo;

import java.util.List;
/**
 * @Package com.hex.ds.hdrs.app.service
 * @ClassName IAppAdminRelationService
 * @Description 应用与管理员关联业务接口
 * @Author yu liuyang
 * @Date 2023/4/16 10:46
 * @Version v1.0
 **/
public interface IAppAdminRelationService {

    /**
     * @Method queryList <br>
     * @Param [appAdminRelationDto] <br>
     * @Return java.util.List<com.hex.ds.hdrs.app.po.AppAdminRelation> <br>
     * @Description 查询应用与管理员列表 <br>
     * @Author yu liuyang <br>
     * @Date 2023/4/17 18:19 <br>
     * @Version V1.0 <br>
     */
    List<AppAdminRelationPo> queryList(AppAdminRelationDto appAdminRelationDto);

    /*
     * @Method: queryList <br>
     * @Param: [userName, appCode] <br>
     * @Return: java.util.List<com.hex.ds.hdrs.app.po.AppAdminRelationPo> <br>
     * @Description：根据用户名和应用编码查询两者直接的关系<br>
     * @Author： wz.li<br>
     * @Date： 2023/6/1 11:52 <br>
     * @Version： V2.0.2<br>
     */
    List<AppAdminRelationPo> queryList(String userName, String appCode);

    /**
     * @Method addAdmin <br>
     * @Param [appAdminRelationDto] <br>
     * @Return void <br>
     * @Description 添加管理员 <br>
     * @Author yu liuyang <br>
     * @Date 2023/4/17 18:20 <br>
     * @Version V1.0 <br>
     */
    void addAdmin(AppAdminRelationDto appAdminRelationDto);

    /**
     * @Method addAppUser <br>
     * @Param [user, appCode] <br>
     * @Return void <br>
     * @Description 添加应用用户 <br>
     * @Author yu liuyang <br>
     * @Date 2023/4/17 18:20 <br>
     * @Version V1.0 <br>
     */
    void addAppUser(UserDto user,String appCode);

    /**
     * @Method modifyByAppCode <br>
     * @Param [appAdminRelationDto] <br>
     * @Return void <br>
     * @Description 根据应用编码修改应用与管理员关联 <br>
     * @Author yu liuyang <br>
     * @Date 2023/4/17 18:20 <br>
     * @Version V1.0 <br>
     */
    void modifyByAppCode(AppAdminRelationDto appAdminRelationDto);

    /**
     * @Method remove <br>
     * @Param [appCode, adminUserCode] <br>
     * @Return void <br>
     * @Description 根据应用编码或管理员用户编码删除应用与管理员关联 <br>
     * @Author yu liuyang <br>
     * @Date 2023/4/18 17:25 <br>
     * @Version V1.0 <br>
     */
    void remove(String appCode, String adminUserCode);

    /*
     * @Method: removeByAppCode <br>
     * @Param: [appCode] <br>
     * @Return: void <br>
     * @Description：根据应用编码删除<br>
     * @Author： wz.li<br>
     * @Date： 2023/4/23 17:12 <br>
     * @Version： V2.0.2<br>
     */
    void removeByAppCode(String appCode);

    List<MenuPo> queryPermissionByRoleId(String roleId);

}
